In any system which keeps resources per flow, there is generally the question of identifying when flows end and when their resources can be released. For some flows, this question may be easy to answer (e.g., Transmission Control Protocol or “TCP” flows that close with specific end messages or “FINs”). For other flows (e.g., any User Datagram Protocol or “UDP” flows, or TCP flows with no FIN messages), however, this is typically answered based on aging techniques. In other words, when a flow has no traffic for a predefined (long enough) aging time (i.e., is “silent”), the flow is considered to have ended. An issue thus involves determining the best aging time per flow type.
In particular, the aging time generally affects resources, performance (e.g., processor cycles), and accuracy. That is, if the aging time is too short, and the flow resources are released before the actual flow ends, a new “flow open” event will be triggered to handle the rest of the flow in some systems, or the flow might be mistreated altogether in others (a firewall, for example). Alternatively, if the aging time is too long, flows may remain open for a long time before ending by aging, thus inefficiently allocating resources for the silent flow. These factors, as will be appreciated by those skilled in the art, affect both performance and accuracy. There remains a need, therefore, for a technique that provides a tool for use with tuning aging parameters of flows.